home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (DO)
/
A+ Disk Magazine Volume 1, No. 1 (1984)(Ziff-Davis).zip
/
A+ Disk Magazine Volume 1, No. 1 (1984)(Ziff-Davis).do
/
PYRAMID.bas
< prev
next >
Wrap
BASIC Source File
|
1996-12-24
|
9KB
|
195 lines
1 HOME : VTAB 8: HTAB 12: PRINT "A+ DISK MAGAZINE"
2 VTAB 10: HTAB 16: PRINT "PRESENTS"
3 VTAB 12: HTAB 12: INVERSE : PRINT " PYRAMID MATCH ": NORMAL
4 FOR I = 1 TO 500: NEXT I
5 VTAB 15: HTAB 12: PRINT "BY PAUL SOMERSON"
6 VTAB 17: HTAB 14: PRINT "PROGRAMMED BY"
7 VTAB 19: HTAB 10: PRINT "OPPENHEIMER SOFTWARE"
8 VTAB 23: HTAB 22: PRINT "(C)COPYRIGHT 1983"
9 FOR I = 1 TO 4000: NEXT I
10 REM ** PYRAMID MATCH **
20 REM ** MODIFICATIONS BY RON WIENER
50 HOME : DIM A$(20),AA$(20)
55 FOR I = 1 TO 40:B$ = B$ +" ": NEXT
75 DH$ = "-": FOR I = 1 TO 40:DH$ = DH$ +"-": NEXT I
80 AS$ = "*": FOR I = 1 TO 39:AS$ = AS$ +"*": NEXT I
85 GOSUB 3600
90 A4$ = AS$
94 GOTO 250
95 PM$ = " < < P Y R A M I D M A T C H > > "
100 VTAB 8: HTAB 1: PRINT A4$
110 VTAB 16: HTAB 1: PRINT A4$
120 FOR W = 9 TO 15
125 VTAB W: HTAB 1: PRINT "*": VTAB W: HTAB 40: PRINT "*": NEXT W
200 VTAB 14: HTAB 8: PRINT "(HIT ANY KEY TO CONTINUE)"
210 VTAB 11: HTAB 16: PRINT " PYRAMID "
215 FOR I = 1 TO 350: NEXT
220 VTAB 11: HTAB 16: INVERSE : PRINT " MATCH ": NORMAL
225 FOR I = 1 TO 350: NEXT
230 X = PEEK( -16384): POKE -16368,0: IF X < = 127 THEN 210
250 HOME
275 VTAB 1: HTAB 1: PRINT PM$
280 VTAB 10: HTAB 1: PRINT A4$: VTAB 17: HTAB 1: PRINT A4$
290 FOR FG = 11 TO 16: VTAB FG: HTAB 1: PRINT "*": VTAB FG: HTAB 40: PRINT "*": NEXT FG
410 VTAB 14: HTAB 2: PRINT LEFT$(B$,38): VTAB 15: HTAB 2: PRINT LEFT$(B$,38)
415 VTAB 13: HTAB 5: PRINT "HIT ";: INVERSE : PRINT "'I'";: NORMAL : PRINT " IF YOU WANT INSTRUCTIONS;"
420 VTAB 14: HTAB 9: PRINT "ANY OTHER KEY TO CONTINUE"
425 POKE -16368,0: WAIT -16384,128
430 X = PEEK( -16384): POKE -16368,0
440 IF X < >201 THEN 1000
500 REM ** INSTRUCTIONS
510 HOME
515 VTAB 3:C$ = "I'M GLAD YOU ASKED . . . ": GOSUB 3570
517 VTAB 6
520 C$ = "THE COMPUTER WILL PRINT LONGER": GOSUB 3570
525 C$ = "AND LONGER NUMBERS ON THE SCREEN ..": GOSUB 3570
530 C$ = "BUT JUST FOR AN INSTANT!!": GOSUB 3570
550 C$ = "YOUR JOB IS TO RE-ENTER THEM CORRECTLY": GOSUB 3570
560 C$ = "AND AS QUICKLY AS YOU POSSIBLY CAN,": GOSUB 3570
565 C$ = "IN AN EVER-INCREASING PYRAMID.": GOSUB 3570
575 VTAB 22:C$ = "HIT ANY KEY FOR THE REST !!": GOSUB 3570: VTAB 23: HTAB 39
580 A$ = "": GET A$: IF A$ = "" THEN 580
585 HOME
590 VTAB 6:C$ = "THERE ARE 17 LEVELS IN THE PYRAMID.": GOSUB 3570
600 C$ = "EACH LEVEL IS HARDER THAN THE ONE BEFORE": GOSUB 3570
602 C$ = "WHEN YOU ENTER NUMBERS DON'T WORRY": GOSUB 3570
604 C$ = "ABOUT HITTING THE RETURN KEY ": GOSUB 3570
605 C$ = "THE COMPUTER WILL DO THIS FOR YOU.": GOSUB 3570
615 C$ = "JUST ENTER THE NUMBERS THEMSELVES.": GOSUB 3570
620 VTAB 22:C$ = "HIT ANY KEY FOR THE REST !!": GOSUB 3570: VTAB 23: HTAB 39
630 A$ = "": GET A$: IF A$ = "" THEN 630
650 HOME
660 VTAB 6
670 C$ = "YOU CAN ALWAYS ASK THE COMPUTER": GOSUB 3570
680 C$ = "TO SHOW YOU THE NUMBER AGAIN, ": GOSUB 3570
685 C$ = "AS MANY TIMES AS YOU WANT, BY JUST ": GOSUB 3570
690 C$ = "HITTING THE ESC KEY. THIS WILL ": GOSUB 3570
700 C$ = "CANCEL ANY DIGITS ALREADY ENTERED": GOSUB 3570
705 C$ = "FOR THAT LEVEL, AND YOU MAY START": GOSUB 3570
710 C$ = "THAT LEVEL OVER": GOSUB 3570
715 C$ = "BEWARE. . STARTING OVER LOSES POINTS!": GOSUB 3570
720 VTAB 22:C$ = "HIT ANY KEY FOR THE REST !!": GOSUB 3570: VTAB 23: HTAB 39
730 A$ = "": GET A$: IF A$ = "" THEN 730
750 HOME
775 HOME
780 VTAB 6:C$ = " THERE ARE 9 DEGREES OF DIFFICULTY": GOSUB 3570
790 C$ = "THE HIGHER THE DEGREE THE LESS TIME": GOSUB 3570
800 C$ = "YOU HAVE OVERALL, AND THE LESS TIME": GOSUB 3570
805 C$ = "YOU WILL SEE EACH NUMBER": GOSUB 3570
810 C$ = "THE HIGHER THE LEVEL AND DEGREE": GOSUB 3570
820 C$ = "OF DIFFICULTY, THE MORE POINTS YOU GET!": GOSUB 3570
830 PRINT : PRINT
850 C$ = "HIT ANY KEY TO BEGIN THE CHALLENGE": GOSUB 3570: VTAB 23: HTAB 20
880 A$ = "": GET A$: IF A$ = "" THEN 880
1000 HOME
1004 CT = 0
1005 VTAB 1: HTAB 1: PRINT PM$
1010 VTAB 3: HTAB 3: INVERSE : PRINT "PLEASE SELECT A LEVEL OF DIFFICULTY": NORMAL
1012 X = 5
1015 FOR I = 1 TO 9: VTAB X: HTAB 7:X = X +2
1025 PRINT I;"..";LV$(I): IF I = 9 THEN HTAB 10: PRINT "CIVILIZATION"
1035 NEXT I
1050 VTAB 24: HTAB 20
1055 A$ = "": GET A$: IF A$ = "" THEN 1055
1060 A = VAL(A$): IF A <1 OR A >9 THEN 1050
1065 X = 3 +(2 *A): VTAB X: HTAB 2: FLASH : PRINT " --> ";A;". ";LV$(A): IF A = 9 THEN VTAB X +1: HTAB 10: PRINT "CIVILIZATION"
1070 NORMAL : FOR I = 1 TO 2000: NEXT I:NS = (10 -A) *10:DF = A
1090 HOME : VTAB 1: HTAB 1: PRINT PM$
1100 VTAB 7: HTAB 5: PRINT LEFT$(AS$,30):L$ = LV$(A): IF A = 9 THEN L$ = "VISITOR"
1105 FOR I = 1 TO 8: HTAB 5: PRINT "*"; LEFT$(B$,28);"*": NEXT I: HTAB 5: PRINT LEFT$(AS$,30)
1110 VTAB 9: HTAB 18: PRINT "OK,"
1112 VTAB 11:L = LEN(L$):L = INT((30 -L)/2): HTAB L +5: INVERSE : PRINT L$: NORMAL
1115 VTAB 13: HTAB 7: PRINT "YOU HAVE EXACTLY ";: INVERSE : PRINT NS;" SECONDS": NORMAL
1120 VTAB 15: HTAB 9: PRINT "TO COMPLETE THE PYRAMID"
1125 VTAB 20: HTAB 5: PRINT "HIT ANY KEY TO START THE GAME ";
1130 A$ = "": GET A$: IF A$ = "" THEN 1130
1150 HOME : VTAB 1: HTAB 2: PRINT PM$
1170 VTAB 2: HTAB 1: PRINT LEFT$(AS$,39);
1175 FOR I = 1 TO 21: VTAB 2 +I: HTAB 1: PRINT "*";: HTAB 39: PRINT "*";: NEXT I: HTAB 1: PRINT LEFT$(AS$,39);
1180 VTAB 21: HTAB 10: PRINT LEFT$(AS$,21)
1185 HTAB 10: PRINT "*"; LEFT$(B$,19);"*";
1200 GOSUB 5000
1205 PRINT CHR$(7): PRINT CHR$(7)
1207 VTAB 24: HTAB 1: PRINT LEFT$(B$,38);: VTAB 22: HTAB 14: PRINT LEFT$(B$,10)
1210 FOR Q = 1 TO 17
1211 T$ = "":TT$ = "":T1$ = "":T2$ = "":G$ = ""
1214 VTAB 5: HTAB 8: PRINT Q;
1215 FOR R = 1 TO LEN(A$(Q))
1220 T$ = MID$ (A$(Q),R,1) + CHR$(32)
1230 TT$ = TT$ +T$: NEXT R
1240 AA$(Q) = TT$
1250 VTAB Q +2:HL = LEN(TT$):H = INT((40 -HL)/2) +1: HTAB H: PRINT TT$
1255 FOR I = 1 TO (1500 +((DF -9) *100)): NEXT
1257 CT = CT +700
1260 VTAB Q +2: HTAB H: PRINT LEFT$(B$,HL)
1265 GOSUB 7000
1268 VTAB 22: HTAB 12: PRINT "TIME REMAINING:";
1269 NT = NS *1000
1270 CT = CT +58: VTAB 22: HTAB 27: PRINT INT(NS -CT/1000);" ";: IF CT >NT THEN 8990
1271 IF PEEK( -16384) <128 THEN 1270
1272 X% = PEEK( -16384) -128: POKE -16368,0
1274 IF X% <0 THEN 1270
1275 IF X% = 27 THEN GOSUB 5990: GOTO 1211
1276 IF X% <48 OR X% >57 THEN 1270
1277 FOR W = 1 TO 7:WW = PEEK( -16336): NEXT
1278 PRINT CHR$(7)
1279 CT = CT +180
1280 A$ = CHR$(X%):G$ = G$ +A$: IF LEN(G$) = Q THEN 1295
1290 GOTO 1270
1295 T1$ = "":T2$ = ""
1300 FOR R = 1 TO LEN(A$(Q))
1305 T1$ = MID$ (G$,R,1) + CHR$(32):T2$ = T2$ +T1$
1310 NEXT R
1315 VTAB Q +2: HTAB H: PRINT T2$
1320 IF G$ = A$(Q) THEN PRINT CHR$(7): GOSUB 6020
1330 IF G$ < >A$(Q) THEN VTAB 22: HTAB 11: FOR I = 1 TO 5: PRINT CHR$(7);: NEXT : PRINT " WRONG...YOU LOSE!";: GOTO 9000
1500 G$ = "": NEXT Q
1505 GAME = SC
1510 VTAB 22: HTAB 11: PRINT " YOU DID IT! ": FOR X = 1 TO 1500: NEXT : GOTO 1000
3570 PRINT :CL = LEN(C$): IF CL > = 39 THEN PRINT C$: RETURN
3575 CL = (40 - LEN(C$))/2: PRINT LEFT$(B$,CL) +C$
3580 RETURN
3600 FOR I = 1 TO 9: READ LV$(I): NEXT I: RETURN
3605 DATA "DROOLING INFANT","LITTLE LEAGUER"
3610 DATA "JUNIOR HIGH","ALMOST DRAFTED"
3615 DATA "TAKING FRESHMAN MATH", "SUMMA CUM LAUDE"
3620 DATA "WHIZ KID","COMPUTER GENIUS"
3630 DATA "VISITOR FROM AN ADVANCED"
5000 REM ** RANDOM NUMBER GENERATOR AND PARSER
5005 NT$ = ""
5010 FOR J = 1 TO 153
5015 N$ = RIGHT$( STR$( INT( RND(1) *10)),1)
5020 IF J = 1 AND N$ = "0" THEN 5015
5030 NT$ = NT$ +N$: VTAB 22: HTAB 19:J$ = " " + STR$(154 -J): PRINT RIGHT$(J$,3): NEXT
5050 PK = 1
5060 FOR K = 1 TO 17: VTAB 24: HTAB 8: FLASH : PRINT "WATCH SCREEN CLOSELY PLEASE ";: NORMAL
5065 IF MID$ (NT$,PK,1) = "0" THEN NT$ = LEFT$(NT$,PK -1) +"1" + MID$ (NT$,PK +1)
5070 A$(K) = MID$ (NT$,PK,K)
5080 PK = PK +K
5090 NEXT K
5100 FOR I = 1 TO 3: VTAB I +2: HTAB 14: PRINT "!";: HTAB 26: PRINT "!";: NEXT : VTAB 6: HTAB 13: PRINT "/";: HTAB 27: PRINT CHR$(92);
5105 VTAB 7: HTAB 2: PRINT LEFT$(DH$,11);: HTAB 28: PRINT LEFT$(DH$,11);
5110 VTAB 3: HTAB 2: PRINT "HI GAME:";: PRINT GAME;
5115 IF GAME = 0 THEN HTAB 10: VTAB 3: PRINT "---";
5120 VTAB 4: HTAB 2: PRINT "DIFFICULTY:";DF;
5130 VTAB 5: HTAB 2: PRINT "LEVEL:";
5140 VTAB 6: HTAB 2: PRINT "SCORE:";
5150 VTAB 3: HTAB 27: PRINT "ENTER NUMBER";
5160 VTAB 4: HTAB 27: PRINT "AFTER FLASH.";
5170 VTAB 5: HTAB 27: PRINT "<ESC> STARTS";
5180 VTAB 6: HTAB 29: PRINT "LEVEL OVER";
5200 RETURN
5990 SC = SC -25
6000 VTAB 6: HTAB 8: PRINT SC;" ";: RETURN
6020 SC = SC +100 +Q *10 +2 *(100 -NS): VTAB 6: HTAB 8: PRINT SC;" ": RETURN
7000 IF CT/1000 >NS THEN VTAB 22: HTAB 12: PRINT " OUT OF TIME! ";: PRINT CHR$(7);: GOTO 9000
7010 VTAB 22: HTAB 12: PRINT "TIME REMAINING:" INT(NS -(CT/1000));" ";: RETURN
8000 HOME : END
8990 VTAB 22: HTAB 12: PRINT " OUT OF TIME! ";: PRINT CHR$(7);
9000 FOR X = 1 TO 2200: NEXT X
9020 VTAB 22: HTAB 11: PRINT " R=REPLAY Q=QUIT ";: GET A$
9040 IF A$ = "R" THEN 9075
9050 IF A$ = "Q" THEN 8000
9060 GOTO 9020
9075 IF SC >GAME THEN GAME = SC
9080 SC = 0: GOTO 1000